home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / cmln0386.arc / CROSSTH1.LTG < prev    next >
Text File  |  1986-03-03  |  1KB  |  46 lines

  1.  
  2.                            Listing  1.   
  3. Simulating a record strcuture in True BASIC containing numbers only.
  4.  
  5.  
  6. ! Define Selected Index function
  7.  
  8. DEF SI(REC_MAP$,P_VAR$)
  9. ! FIND POSITION OF VARIABLE IN RECORD MAP
  10. LET PTR = POS(REC_MAP$,UCASE$(P_VAR$)) 
  11. ! EXTRACT INDEX
  12. LET SI = VAL(REC_MAP$[PTR-2:PTR-1])
  13. END DEF
  14.  
  15. !----------------------------------------------------------------
  16.  
  17. SUB INITIALIZE_CALC(MAP$, REC())
  18.  
  19. LET MAP$ = "01<TEMPERATURE>02<PRESSURE>03<VOLUME>04<RCONST>05<MOLES>"
  20. ! THE ALTERNATE ASSIGNMENT BELOW IS ALSO VALID
  21. ! LET MAP$ = "02<PRESSURE>01<TEMPERATURE>04<RCONST>03<VOLUME>05<MOLES>"
  22.  
  23. ! INITILIZE WITH STP CONDITIONS
  24. LET REC(SI(MAP$,"<TEMPERATURE>")) = 273 ! DEGREES KELVIN
  25. LET REC(SI(MAP$,"<PRESSURE>")) = 1 ! ATMOSPEHERE
  26. LET REC(SI(MAP$,"<RCONSTANT>")) = 0.082 ! UNIVERSAL GAS CONSTANT
  27. END SUB
  28.  
  29. !----------------------------------------------------------------
  30.  
  31. SUB GET_VOLUME(MAP$,REC(),NUM_MOLE)
  32.  
  33. ! ASSIGN ARRAY ELEMENT TO LOCAL VARIABLESèLET TEMP = REC(SI(MAP$,"<TEMPERATURE>")
  34. LET PRESS = REC(SI(MAP$,"<PRESSURE>")) 
  35. LET R = REC(SI(MAP$,"<RCONSTANT>"))
  36.  
  37.  
  38. ! CALCULATE VOLUME
  39. LET VOL = NUM_MOLE * R * TEMP / PRESS 
  40.  
  41. ! ASSIGN RESULT AND NUMBER OF MOLES TO PROPER ARRAY ELEMENTS
  42. LET REC(SI(MAP$,"<VOLUME>")) = VOL
  43. LET REC(SI(MAP$,"<MOLES>")) = NUM_MOLE
  44.  
  45. END SUB
  46.